package com.nehc.nettyserver.service;

import com.nehc.nettyserver.common.model.Message;

import java.util.List;
import java.util.Map;

/**
 * 通知服务接口
 * 提供系统通知功能
 * 
 * @author NEHC
 */
public interface NotificationService {

    /**
     * 发送系统通知给所有在线用户
     * 
     * @param title 通知标题
     * @param content 通知内容
     * @param params 附加参数
     * @return 接收通知的用户数量
     */
    int sendSystemNotification(String title, String content, Map<String, Object> params);
    
    /**
     * 发送系统通知给指定用户
     * 
     * @param userId 用户ID
     * @param title 通知标题
     * @param content 通知内容
     * @param params 附加参数
     * @return 是否发送成功
     */
    boolean sendSystemNotificationToUser(String userId, String title, String content, Map<String, Object> params);
    
    /**
     * 发送系统警告给所有在线用户
     * 
     * @param title 警告标题
     * @param content 警告内容
     * @param params 附加参数
     * @return 接收警告的用户数量
     */
    int sendSystemWarning(String title, String content, Map<String, Object> params);
    
    /**
     * 发送系统警告给指定用户
     * 
     * @param userId 用户ID
     * @param title 警告标题
     * @param content 警告内容
     * @param params 附加参数
     * @return 是否发送成功
     */
    boolean sendSystemWarningToUser(String userId, String title, String content, Map<String, Object> params);
    
    /**
     * 获取用户未读通知列表
     * 
     * @param userId 用户ID
     * @return 未读通知列表
     */
    List<Message> getUnreadNotifications(String userId);
    
    /**
     * 标记通知为已读
     * 
     * @param userId 用户ID
     * @param messageId 消息ID
     * @return 是否标记成功
     */
    boolean markNotificationAsRead(String userId, String messageId);
    
    /**
     * 标记所有通知为已读
     * 
     * @param userId 用户ID
     * @return 标记为已读的通知数量
     */
    int markAllNotificationsAsRead(String userId);
} 